import { reactive } from "vue";
import http from "../utils/http";

const course = reactive({
  current_direction: 0, // 当前方向
  current_category: 0, // 当前分类
  direction_list: [], // 课程方向
  category_list: [], // 课程分类
  course_list: [], // 课程列表
  ordering: "-id", // 排序方式
  page: 1, // 当前页码，默认为1
  size: 5, // 当前页数据量
  count: 0, // 课程信息列表的数量
  has_perv: false, // 是否有上一页
  has_next: false, // 是否有下一页
  timer: null, // 课程相关数据的定时器
  text: "", // 搜索课程的关键字
  hot_word_list: [], // 热门搜索词
  course_id: null, // 课程id
  info: {
    // 课程信息
    teacher: {}, // 课程老师信息
    discount: {
      type: "", // 折扣类型，0：限时优惠，1：限时抢购
    },
  },
  chapter_list: [], // 当前课程的章节列表
  course_type: [], // 课程类型列表
  current_course_type: -1, // 当前显示的课程类型，默认为-1，表示全部
  user_count: 0, // 用户中心的课程列表总数
  user_course_list: [], // 用户中心的课程列表
  lesson_list: [], // 章节课时列表
  lesson_tree_props: {
    children: "children",
    label: "label",
  },
  user_course: {}, // 用户在当前课程的学习进度记录
  current_chapter: null, // 正在学习的章节ID
  current_lesson: null, // 正在学习的课时ID
  lesson_link: null, // 正在学习的课时视频ID
  player: null, // 当前页面的视频播放器对象
  current_time: 0, // 播放器，当前播放时间

  // 获取学习方向
  get_course_direction() {
    return http.get("/courses/directions/");
  },

  // 获取课程分类
  get_course_category() {
    return http.get(`/courses/categories/${this.current_direction}/`);
  },

  // 获取课程信息
  get_course_list() {
    let params = {
      page: this.page,
      size: this.size,
    };
    if (this.ordering) {
      params.ordering = this.ordering;
    }
    return http.get(
      `/courses/${this.current_direction}/${this.current_category}/`,
      {
        params,
      }
    );
  },

  // 优惠活动倒计时
  start_timer() {
    clearInterval(this.timer);
    this.timer = setInterval(() => {
      this.course_list.forEach((course) => {
        if (course.discount.expire && course.discount.expire > 0) {
          course.discount.expire--;
        }
      });
    }, 1000);
  },

  // 课程搜索
  search_course() {
    let params = {
      page: this.page,
      size: this.size,
      text: this.text,
    };
    if (this.ordering) {
      params["ordering"] = this.ordering;
    }
    return http.get("/courses/search/", {
      params,
    });
  },

  // 获取热门搜索词
  get_hot_word() {
    return http.get("/courses/hot_word/");
  },

  // 获取课程详情
  get_course_info() {
    return http.get(`/courses/${this.course_id}/`);
  },

  get_course_type_list(token) {
    // 获取课程类型
    return http.get("/courses/type/");
  },

  get_user_course_list(type, token) {
    // 获取用户的课程列表
    return http.get("/users/course/", {
      params: {
        type: type,
        page: this.page,
        size: this.size,
      },
      headers: {
        Authorization: "jwt " + token,
      },
    });
  },

  get_user_course(token) {
    // 获取用户在指定课程中的学习进度
    return http.get(`/users/course/${this.course_id}`, {
      headers: {
        Authorization: "jwt " + token,
      },
    });
  },

  get_lesson_study_time(lesson, token) {
    // 获取课程课时学习进度时间
    return http.get("/users/lesson/", {
      params: {
        lesson,
      },
      headers: {
        Authorization: "jwt " + token,
      },
    });
  },

  get_user_study_progress(lesson, seed, token) {
    // 更新课时学习的进度
    return http.post(
      "/users/progress/",
      {
        time: seed,
        lesson: lesson,
      },
      {
        headers: {
          Authorization: "jwt " + token,
        },
      }
    );
  },
});

export default course;
